1. Technical Field of the Invention
The invention relates generally to communication systems; and, more particularly, it relates to decoders within communication system that employ the determination of a minimal and/or maximal value from among a number of possible values when decoding a received signal.
2. Description of Related Art
Data communication systems have been under continual development for many years. One such type of communication system that has been of significant interest lately is a communication system that employs turbo codes. A primary directive in this area of development has been to try continually to lower the error floor within a communication system. The ideal goal has been to try to reach Shannon's limit in a communication channel. Shannon's limit may be viewed as being the data rate that is used in a communication channel, having a particular signal to noise ratio (SNR), that will achieve error free transmission through the channel. In other words, the Shannon limit is the theoretical bound for channel capacity for a given modulation and code rate.
It is also noted that there are other codes, besides turbo codes, that oftentimes employ calculations that are similar to those employed within turbo decoders. One such example is the low density parity check (LDPC) code. In performing calculations when decoding a received signal, it is common for decoders that employ both of these types of codes to operate in the natural log (ln) domain. For example, within the context of turbo decoders that employ a maximum “a priori” possibility (MAP) approach, a common simplification to the computations of this approach is to operate in the logarithmic domain. This converts all multiplications to additions, divisions to subtractions, and eliminates exponentials entirely, without affecting BER performance.
One somewhat difficult calculation is the natural log (ln) domain includes calculating the sum of exponentials as shown below:ln(ea+eb+ec+ . . . )
This calculation can be significantly reduced in complexity using the Jacobian formula shown below:max*(a,b)=ln(ea+eb)=max(a,b)+ln(1+e−|a−b|)
This calculation is oftentimes referred to as being a max* calculation or max* operation. It is noted that the Jacobian formula simplification of the equation shown above presents the max* operation of only two variables, a and b. This calculation may be repeated over and over when trying to calculate a longer sum of exponentials. For example, to calculate ln(ea+eb+ec), the following two max* operations may be performed:max*(a,b)=ln(ea+eb)=max(a,b)+ln(1+e−|a−b|)=x max*(a,b,c)=max*(x,c)=ln(ex+ec)=max(x,c)+ln(1+e−|x−c|)
While there has a been a great deal of development within the context of these various codes in general (turbo code and LDPC code), the extensive processing and computations required to perform decoding therein can be extremely burdensome—this one example above of the calculating the sum of exponentials illustrates the potentially complex and burdensome calculations needed when performing decoding. Sometimes the processing requirements are so burdensome that they simply prohibit their implementation within systems having very tight design budgets.
There have been some non-optimal approaches to deal with the burdensome calculations required to do such burdensome calculations. For example, in performing this basic max* operation, some decoders simply exclude the logarithmic correction factor of ln(1+e−|a−b|) altogether and use only the max(a,b) result which may be implemented within a single instruction within a digital signal processor (DSP). However, this will inherently introduce some degradation in decoder performance. Most of the common approaches that seek to provide some computational improvements either cut corners in terms of computational accuracy, or they do not provide a sufficient reduction in computational complexity to justify their integration. The prohibiting factor concerning the implementation of many of these codes, including turbo codes and LDPC codes, is oftentimes the inherent computational complexity required therein.
There still exists a need in the art to provide for more efficient solutions when making calculations, such as max*, within decoders that operate within the logarithmic domain.